---
layout: intro
page_title: Vagrant vs. CLI Tools
sidebar_title: CLI Tools
description: |-
  Virtualization software like VirtualBox and VMware come with command line
  utilities for managing the lifecycle of machines on their platform. Vagrant
  actually uses many of these utilities internally. The difference between these
  CLI tools and Vagrant is that Vagrant provides a declarative, reproducible,
  idempotent workflow.
---

# Vagrant vs. CLI Tools

Virtualization software like VirtualBox and VMware come with command line
utilities for managing the lifecycle of machines on their platform. Many
people make use of these utilities to write their own automation. Vagrant
actually uses many of these utilities internally.

The difference between these CLI tools and Vagrant is that Vagrant builds
on top of these utilities in a number of ways while still providing a
consistent workflow. Vagrant supports multiple synced folder types, multiple
provisioners to setup the machine, automatic SSH setup, creating HTTP tunnels
into your development environment, and more. All of these can be configured
using a single simple configuration file.

Vagrant still has a number of improvements over manual scripting even if you
ignore all the higher-level features Vagrant provides. The command-line
utilities provided by virtualization software often change each version
or have subtle bugs with workarounds. Vagrant automatically detects the
version, uses the correct flags, and can work around known issues. So if
you're using one version of VirtualBox and a co-worker is using a different
version, Vagrant will still work consistently.

For highly-specific workflows that don't change often, it can still be
beneficial to maintain custom scripts. Vagrant is targeted at building
development environments but some advanced users still use the CLI tools
underneath to do other manual things.
